package com.example.jwt.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.jwt.entity.TokenUser;
import com.example.user.entity.User;
import com.example.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Set;

/**
 * @author: mtl
 * @Date: 2022/1/17 14:56
 * @Description: 用相关业务层  关联权限信息为，用户关联多个角色，角色关联多个权限。
 */
@Service
public class JwtRoleService {

    @Autowired
    UserService userService;

    /**
     * 根据账号获取用户信息
     * @param username
     * @return
     */
    public TokenUser getUserInfoByName(String username){
        //先造个假数据 之后业务再对接数据库
        //return new User().setUsername(username).setPassword("admin").setSalt("123");

        User user = userService.getOne(new QueryWrapper<User>().lambda().eq(User::getName, username));
        return TokenUser.copy(user);
    }

    /**
     * 从数据库获取用户权限信息
     * @param username
     * @return
     */
    public Set<String> findUserPermission(String username){
        Set<String> str = userService.byUserPermissions(username);
        str.add("list-update");
        str.add("list-add");
        str.add("list-delete");
        return str;
    }

    /**
     * 从数据库获取用户角色信息
     * @param username
     * @return
     */
    public Set<String> findUserRoles(String username){
        Set<String> str = userService.byUserRoles(username);
        str.add("admin");
        str.add("user");
//        str.add("vip");
        return str;
    }

    public TokenUser isUserInfo(String username, String password){
        //查询数据库 对比账号密码 这里省略了 后续业务再对接上数据库
        return new TokenUser().setUsername(username).setPassword(password);
    }

}
